/*
作用：一些文件结构的声明
作者：孙泽宇
*/
/*
DOS产生于1980年，因此文件的日期
不可能早于1980年，必须加上“1980”这个值
才能得到真正的年值
*/
//C语言库函数中目录类型为0x10，文件为0x32,卷标0x08
#ifndef _file_struct_h_
#define _file_struct_h_
typedef struct file_info		//储存文件信息的结构
{
	char name[13];		//文件姓名，包含后缀名
	/*
	文件类型,第8位可用来记录是否被选中，选中置1，第7位用来记录是否被剪贴，肯定置1
	第1位为1表示为文件，第2位为1表示为目录，第3位为1表示为隐含文件，第4位表示为卷标
	第5位为1表示为系统文件(一般都是隐含文件)，第6位为1表示为子链表表头
	*/
	char type;		
	unsigned time;		//最后修改时间，(0-4位:用于记录文件所在的层级；5-10位:分数；11-15位:小时数)
	unsigned date;		//最后修改日期，(0-4位：日；5-8位：月；9-15位：年减1980)
	long size;		//文件大小
}file_info;

typedef struct file_node		//文件对应的节点，使用孩子兄弟表示法
{
	file_info file;		//文件
	/*
	如果file类型为文件，则只有前后节点。
	如果file类型为目录，则不仅具有前后节点，也存在子链表，该目录为子链表表头。
	如果file类型为卷标，则只有子链表。
	子链表表头前节点为上一级
	*/
	struct file_node *pre;		//前链表
	struct file_node *next;		//后节点
	struct file_node *child;	//子链表
	
}file_node;


	/*
	复制为1，撤销复制为2，剪切为3，撤销剪切为4，粘贴为5，撤销粘贴为6
	删除为7，撤销删除为8，重命名为9，撤销重命名为10
	*/
#endif